package com.hkpw.system.service;

import com.hkpw.common.core.domain.AjaxResult;
import com.hkpw.system.domain.PersonSync;
import com.hkpw.system.domain.request.HkPersonListRequest;
import com.hkpw.system.domain.request.PersonSyncRequest;
import com.hkpw.system.domain.vo.PersonSyncItemResult;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
 * 人员信息同步Service接口
 *
 * @author andy
 * @date 2022-10-06
 */
public interface IPersonSyncService {

    /**
     * 从海康人脸库获取人员信息列表-分页获取，每页最多1000条
     * @param hkPersonListRequest
     * @return
     */
    public String pageHkFacePersonsList(HkPersonListRequest hkPersonListRequest);


    /**
     * 批量同步人员信息
     *
     * @param personSyncList
     * @return
     */
    public AjaxResult batchSyncPerson(List<PersonSyncRequest> personSyncList);

    /**
     * 添加人脸
     *
     * @param personId
     * @param file
     * @return
     */
    public AjaxResult faceSync(String personId, MultipartFile file);

    public AjaxResult faceDel(String personId);

    /**
     *
     * @param picBase64
     * @return
     */
    public Boolean facePicCheck(String picBase64);

    /**
     * 批量删除人员
     *
     * @param personIds
     * @return
     */
    public AjaxResult deletePerson(List<String> personIds);

    /**
     * 查询人员信息同步
     *
     * @param id 人员信息同步主键
     * @return 人员信息同步
     */
    public PersonSync selectPersonSyncById(Long id);

    /**
     * 查询人员信息同步列表
     *
     * @param personSync 人员信息同步
     * @return 人员信息同步集合
     */
    public List<PersonSync> selectPersonSyncList(PersonSync personSync);

    /**
     * 新增人员信息同步
     *
     * @param personSync 人员信息同步
     * @return 结果
     */
    public int insertPersonSync(PersonSyncRequest personSync);

    /**
     * 修改人员信息同步
     *
     * @param personSync 人员信息同步
     * @return 结果
     */

    public int updatePersonSync(PersonSync personSync);

    /**
     * 批量删除人员信息同步
     *
     * @param ids 需要删除的人员信息同步主键集合
     * @return 结果
     */
    public int deletePersonSyncByIds(Long[] ids);

    /**
     * 删除人员信息同步信息
     *
     * @param id 人员信息同步主键
     * @return 结果
     */
    public int deletePersonSyncById(Long id);

    /**
     * 处理同步成功的人员列表，到人脸库中间库
     * @param personSyncRequests
     * @param sucessList
     */
    public void dealMiddlePersonSync(List<PersonSyncRequest> personSyncRequests, List<PersonSyncItemResult> sucessList);

    /**
     * 删除人员成功后，同步到中间库
     * @param personIds
     * @param result
     */
    public void dealDeleteMiddlePerson(List<String> personIds,AjaxResult result);
}
